#ifndef AXI_DMA_H
#define AXI_DMA_H

#include <vxWorks.h>
#include <hwif/vxBus.h>

#ifdef __cplusplus
extern "C" {
#endif

// 状态寄存器位定义
#define DMA_SR_HALTED_MASK      0x00000001 // 通道停止位
#define DMA_SR_IDLE_MASK        0x00000002 // 通道空闲位
#define DMA_SR_IOC_IRQ_MASK     0x00001000 // 完成中断状态位
#define DMA_SR_ERR_IRQ_MASK     0x00007000 // 错误中断状态位

// 控制寄存器位定义
#define DMA_CR_RS_MASK          0x00000001 // Run/Stop位
#define DMA_CR_RESET_MASK       0x00000004 // 复位位
#define DMA_CR_IOC_IRQ_EN_MASK  0x00001000 // 完成中断使能位


/* DMA设备打开/关闭 */
void axiDmaOpen(VXB_DEV_ID *ppDev, UINT32 unit);
int axiDmaClose(VXB_DEV_ID pDev);

/* DMA传输控制 */
STATUS axiDmaTransfer(VXB_DEV_ID pDev, UINT32 src,UINT32 length);

#ifdef __cplusplus
}
#endif

#endif /* AXI_DMA_H */
